#ifndef _TPM_MEASUREMENT_
#define _TPM_MEASUREMENT_

#include "system_information.h"
#include "indicate.h"

typedef int STATUS_TPM;

#define  SUCCESS 1
#define  FAIL 0

/*
 *	Description:
 *		This function will get the point of CPU information struct 
 *
 *	Parameters:
 *		 pCpuStruct	: out
 *
 *	Returns:
 *		1 if successful, 0 if it failed.
 *
 *	Comments.
 */
 STATUS_TPM initCPUStruct(OUT PCPUINFO* ppCpuStruct);

/*
 *	Description:
 *		This function will fill the CPU information into struct 
 *
 *	Parameters:
 *		 cpuStruct	: out
 *
 *	Returns:
 *		1 if successful, 0 if it failed.
 *
 *	Comments.
 */
STATUS_TPM fillCPUStruct(IN PCPUINFO cpuStruct);

/*
 *	Description:
 *		This function will free the CPU information struct and make point NULL
 *
 *	Parameters:
 *		 pCpuStruct	: out
 *
 *	Returns:
 *		1 if successful, 0 if it failed.
 *
 *	Comments.
 */
STATUS_TPM freeCPUStruct(IN PCPUINFO* ppCpuStruct);

/*
 *	Description:
 *		This function will get the point of software information struct 
 *
 *	Parameters:
 *		 pSoftInfo	: out
 *
 *	Returns:
 *		1 if successful, 0 if it failed.
 *
 *	Comments.
 */
STATUS_TPM initSoftStruct(OUT PSOFTINFO* ppSoftInfo);


/*
 *	Description:
 *		This function will fill the software information into struct 
 *
 *	Parameters:
 *		 softInfoStruct	: out
 *
 *	Returns:
 *		1 if successful, 0 if it failed.
 *
 *	Comments.
 */
STATUS_TPM fillSoftStruct(IN PSOFTINFO pSoftInfo);

/*
 *	Description:
 *		This function will free the software information struct and make point NULL
 *
 *	Parameters:
 *		 pSoftInfo	: out
 *
 *	Returns:
 *		1 if successful, 0 if it failed.
 *
 *	Comments.
 */
STATUS_TPM freeSoftStruct(IN PSOFTINFO* ppSoftInfo);

#endif

